Наш проект жив, здоров, а чего ему будет. Хороший проект. Теперь мы попробуем создать свой CPaintDC, ведь он умеет рисовать далеко не все, крест например !
Создаем свой класс от CPaintDC:
class CMyPaintDC: public CPaintDC
{
public:
CMyPaintDC(CWnd* pWnd); // конструктор
void DrawCross(int iPosX, int iPosY); // функция рисования креста
};
И реализацию конечно:
CMyPaintDC::CMyPaintDC(CWnd* pWnd)
:CPaintDC(pWnd) // мы дети CPaintDC
{
}
void CMyPaintDC::DrawCross(int iPosX, int iPosY)// для создания своей фигуры используем
{ // функции CPaintDC
MoveTo(iPosX-50,iPosY);
LineTo(iPosX+50,iPosY);
MoveTo(iPosX,iPosY-50);
LineTo(iPosX,iPosY+50);
}
Пробуем:
void CMainWnd::OnPaint()
{
CMyPaintDC dc(this); // наш класс
CPen MyPen(PS_DASHDOT,1,RGB(0,255,0)); // настраиваем перо
dc.SelectObject()(MyPen); // выбираем перо
for (int x=1;x<400;x=x+50)
{
dc.DrawCross(100+x,100+x); // наша функция
}
}
Запускаем программу и смотрим результат.

Примененный подход должен быть до боли знаком. Вспомним.
// кнопка
class CMyButton: public CButton
{
......
}
// рамка окна
class CMainWnd : public CFrameWnd
{
......
};
Обратите внимание на реализацию конструктора. Нам его не нужно переделывать, и поэтому сразу при создании вызываем конструктор папы и передаем ему параметры. Откуда я взял параметры в конструктор CMyPaintDC? От CPaintDC - написал, навел курсор и нажал F1. Хорошая кнопка помогает часто!
Позволю себе остановиться на поиске помощи.
ВЕРСИЯ 5.0
Видите бинокль в проекте ? Нажмите на него левой кнопкой
мышки. Появится диалоговое окно с вкладками Index и Query. В
Index введите, ну там строка для ввода всего одна, наш CPaintDC и внизу будут
темы. Про конструктор это CPaintDC::CPaintDC,
щелкните мышкой по нему. Оттуда параметры я и взял. А вот в Query вы
найдете все страницы HTML помощи где упоминается введенное вами слово,
после нажатия кнопки. Что за кнопка догадаетесь.
ВЕРСИЯ 6.0
Действуем аналогично, нажимаем на бинокль. Запустится
MSDN Library, в которой вы можете произвести поиск нужного раздела
справки. Либо по указателю, а если там не найдете, то в поиске, который
просмотрит все документы и найдет все места где данное слово находится.

Далее в методе OnPaint() рисуем. Но не просто, а создаем сначала перо. CPen - это перо. Мы все делаем с параметрами - тип, толщина, цвет. PS_DASHDOT - это пунктир. И методом SelectObject() указываем, что рисовать именно им. Рисуем кресты по диагонали.
Запускайте, компилируйте. Кресты, зеленые, по диагонали. Круто! Красиво!
Создайте наследника от CPaintDC:
class CMyPaintDC: public CPaintDC ......
Создайте свои функции рисования:
class CMyPaintDC: public CPaintDC
{
......
void DrawCross(int iPosX, int iPosY);
}